PostgreSQL HR 示例库
1 背景知识
许多人先学习了 Oracle 数据库然后再学习 PostgreSQL 数据库,所以对于 PostgreSQL Sakila示例库 很陌生,如果想使用 Oracle 的 HR 示例库,则可以使用以下生成一个跟 Oracle 一样的。
2 HR 脚本导入
2.1 创建表结构
将会创建一个 schema hr
,并创建 7
张表,具体每张表的含义如下:
表名称 | 说明 |
---|---|
regions | 地区表 |
countries | 国家表 |
locations | 位置表 |
departments | 部门表 |
jobs | 岗位表 |
employees | 人员表 |
job_history | 人员历史表 |
2.2 上传脚本文件
- 上传
hr.sql
脚本到/soft
。 - 更改脚本属主和属主。
su - root
chown postgres:postgres /soft/ -R
2.3 导入数据
psql -U postgres -d postgres
createdb testdb
psql -U postgres -d testdb -f /soft/hr.sql
2.4 删除数据
psql -U postgres -d testdb -c "DROP SCHEMA hr CASCASE"
3 查询示例
接下来对于示例数据进行演示。
3.1 demo1
SELECT first_name "First", last_name "Last",
SALARY "Salary", COMMISSION_PCT "%"
FROM employees
WHERE salary >=11000 AND commission_pct IS NOT NULL;
3.2 demo2
SELECT DENSE_RANK(3000) WITHIN GROUP (ORDER BY salary DESC) "Rank"
FROM employees
WHERE job_id LIKE '%CLERK';
3.3 demo3
SELECT e.first_name || ' ' || e.last_name "Name",
l.city || ', ' || c.country_name "Location"
FROM employees e, departments d, locations l, countries c
WHERE e.department_id=d.department_id AND
d.location_id=l.location_id AND
l.country_id=c.country_id
ORDER BY last_name;